package com.hb.trans.mvp.presenter

import com.basiclib.base.BasePresenter
import com.basiclib.lifecycle.RxLifecycleUtils
import com.basiclib.network.RetryWithDelay
import com.basiclib.network.RxErrorHandler
import com.hb.trans.bean.Base
import com.hb.trans.bean.NewDetail
import com.hb.trans.global.ErrorHandleSubscriber
import com.hb.trans.mvp.contract.NewDetailContract
import com.hb.trans.mvp.model.NewDetailModel
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import javax.inject.Inject

class NewDetailPresenter @Inject constructor(model: NewDetailModel, var errorHandler: RxErrorHandler) :
    BasePresenter<NewDetailContract.View, NewDetailContract.Model>(model) {

    fun getNewDetail(id: String) {
        mModel.getNewDetail(id)
            .subscribeOn(Schedulers.io())
            .retryWhen(RetryWithDelay())
            .observeOn(AndroidSchedulers.mainThread())
            .compose(RxLifecycleUtils.bindToLifecycle(mRootView!!))
            .subscribe(object : ErrorHandleSubscriber<Base<NewDetail>>(errorHandler) {
                override fun next(r: Base<NewDetail>) {
                    if (r.code == 1) {
                        mRootView?.setNewContent(r.data)
                    } else {
                        mRootView?.showShortToast(r.info ?: "")
                    }
                }
            })
    }
}